package com.hyt.it.ogt.kq.service.gov.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hyt.it.ogt.kq.common.gov.utils.tree.Tree;
import com.hyt.it.ogt.kq.service.gov.model.entity.ExamMonitor;
import com.hyt.it.ogt.kq.service.gov.model.param.ExamMonitorParam;
import com.hyt.it.ogt.kq.service.gov.model.param.GetRoomTreeParam;
import com.hyt.it.ogt.kq.service.gov.model.vo.ExamMonitorVO;

/**
 * <p>
 * 考试过程监控表 服务类
 * </p>
 *
 * @author liuq
 * @since 2021-04-22
 */
public interface IExamMonitorService extends IService<ExamMonitor> {
	
	/**
	 * 查询考场树
	 * @param param 查询条件
	 * @return 考场树
	 */
	List<Tree> getRoomTree(GetRoomTreeParam param);
	
	/**
	 * 考试过程监控数据
	 * @param param 考试过程监控参数对象
	 * @param pageParam 当前页
	 * @param param 每页显示条数
	 * @return 监控数据
	 */
	Page<ExamMonitorVO> page(Page<ExamMonitorVO> pageParam, ExamMonitorParam param);

	/**
	 * 初始化场次监控表
	 * @param taskId
	 * @param timeId
	 */
	void initExamMonitor(String taskId, String timeId);

	/**
	 * 根据考场批次编号获取考试过程监控信息
	 * @param taskCode 考试任务编号
	 * @param roomCode 考场编号
	 * @param timeCodes 批次编号（多个用英文逗号隔开）
	 * @return 考试过程监控信息
	 */
	List<ExamMonitor> getBatchByTimeRoomCode(String taskCode, String roomCode, String timeCodes);

	/**
	 * 根据场次编号获取考试过程监控信息
	 * @param taskCode 考试任务编号
	 * @param roomCode 考场编号
	 * @param timeRoomCode 场次编号
	 * @return 考试过程监控信息
	 */
	ExamMonitor getByTimeRoomCode(String taskCode, String roomCode, String timeRoomCode);

	/**
	 * 根据考场编号和批次编号获取考试过程监控信息
	 * @param taskCode 考试任务编号
	 * @param roomCode 考场编号
	 * @param timeCode 批次编号
	 * @return 考试过程监控信息
	 */
	ExamMonitor getByTimeAndRoomCode(String taskCode, String roomCode, String timeCode);

}
